package com.shop.mapper;

import com.shop.entity.Order;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author XCH
 * @date 2025 - 05 - 20
 */
@Mapper
public interface OrderMapper {
    /**
     * 列表订单
     *
     * @param pageNum  页面编号
     * @param pageSize 页面大小
     * @return {@link List}<{@link Order}>
     */
    List<Order> listOrder(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);

    /**
     * 根据订单ID获取订单
     *
     * @param id 订单id
     * @return {@link Order}
     */
    Order getOrderById(@Param("id") int id);

    Order getOrderByOrderId(@Param("orderId") String orderId);

    /**
     * 添加订单
     *
     * @param order 订单
     */
    void addOrder(Order order);

    /**
     * 更新订单
     * @param id
     * @param status
     */
    void updateOrder(@Param("id") Integer id, @Param("status") String status);


    /**
     * 删除订单
     * @param id
     */
    void deleteOrder(@Param("id") int id);

    /**
     * 获取总数
     * @return
     */
    int getTotal();

    int countOrderMoney();

    /**
     * 根据状态获取订单
     * @param status
     * @return
     */
    List<Order> getTotalStatus (@Param("status") String status,@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);


    List<Order> getOrderByUserId(@Param("id") int id);
    /**
     * 根据用户ID和状态获取订单
     */
    List<Order> getOrderByIdAndStatus(@Param("id") int id,@Param("status") String status,@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);

    String getOrderStatusById(String orderId);

    /**
     * 更新订单支付状态
     * @param orderId 订单ID
     * @param status 订单状态
     * @param paymentNo 支付单号
     */
    void updateOrderStatus(@Param("orderId") String orderId, 
                         @Param("status") String status, 
                         @Param("paymentNo") String paymentNo);
}

